{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "0a7a09ac",
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "260f9f29",
   "metadata": {},
   "outputs": [],
   "source": [
    "nodes = [\n",
    "    {'name': 'node1', 'symbolSize': 10},\n",
    "    {'name': 'node2', 'symbolSize': 20},\n",
    "    {'name': 'node3', 'symbolSize': 30},\n",
    "    {'name': 'node4', 'symbolSize': 40},\n",
    "    {'name': 'node5', 'symbolSize': 50},\n",
    "    {'name': 'node6', 'symbolSize': 40},\n",
    "    {'name': 'node7', 'symbolSize': 30},\n",
    "    {'name': 'node8', 'symbolSize': 20},\n",
    "]\n",
    "\n",
    "links = []\n",
    "for i in nodes:\n",
    "    for j in nodes:\n",
    "        links.append({'source': i.get('name'), 'target': j.get('name')})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "200faadd",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'source': 'node1', 'target': 'node1'},\n",
       " {'source': 'node1', 'target': 'node2'},\n",
       " {'source': 'node1', 'target': 'node3'},\n",
       " {'source': 'node1', 'target': 'node4'},\n",
       " {'source': 'node1', 'target': 'node5'},\n",
       " {'source': 'node1', 'target': 'node6'},\n",
       " {'source': 'node1', 'target': 'node7'},\n",
       " {'source': 'node1', 'target': 'node8'},\n",
       " {'source': 'node2', 'target': 'node1'},\n",
       " {'source': 'node2', 'target': 'node2'},\n",
       " {'source': 'node2', 'target': 'node3'},\n",
       " {'source': 'node2', 'target': 'node4'},\n",
       " {'source': 'node2', 'target': 'node5'},\n",
       " {'source': 'node2', 'target': 'node6'},\n",
       " {'source': 'node2', 'target': 'node7'},\n",
       " {'source': 'node2', 'target': 'node8'},\n",
       " {'source': 'node3', 'target': 'node1'},\n",
       " {'source': 'node3', 'target': 'node2'},\n",
       " {'source': 'node3', 'target': 'node3'},\n",
       " {'source': 'node3', 'target': 'node4'},\n",
       " {'source': 'node3', 'target': 'node5'},\n",
       " {'source': 'node3', 'target': 'node6'},\n",
       " {'source': 'node3', 'target': 'node7'},\n",
       " {'source': 'node3', 'target': 'node8'},\n",
       " {'source': 'node4', 'target': 'node1'},\n",
       " {'source': 'node4', 'target': 'node2'},\n",
       " {'source': 'node4', 'target': 'node3'},\n",
       " {'source': 'node4', 'target': 'node4'},\n",
       " {'source': 'node4', 'target': 'node5'},\n",
       " {'source': 'node4', 'target': 'node6'},\n",
       " {'source': 'node4', 'target': 'node7'},\n",
       " {'source': 'node4', 'target': 'node8'},\n",
       " {'source': 'node5', 'target': 'node1'},\n",
       " {'source': 'node5', 'target': 'node2'},\n",
       " {'source': 'node5', 'target': 'node3'},\n",
       " {'source': 'node5', 'target': 'node4'},\n",
       " {'source': 'node5', 'target': 'node5'},\n",
       " {'source': 'node5', 'target': 'node6'},\n",
       " {'source': 'node5', 'target': 'node7'},\n",
       " {'source': 'node5', 'target': 'node8'},\n",
       " {'source': 'node6', 'target': 'node1'},\n",
       " {'source': 'node6', 'target': 'node2'},\n",
       " {'source': 'node6', 'target': 'node3'},\n",
       " {'source': 'node6', 'target': 'node4'},\n",
       " {'source': 'node6', 'target': 'node5'},\n",
       " {'source': 'node6', 'target': 'node6'},\n",
       " {'source': 'node6', 'target': 'node7'},\n",
       " {'source': 'node6', 'target': 'node8'},\n",
       " {'source': 'node7', 'target': 'node1'},\n",
       " {'source': 'node7', 'target': 'node2'},\n",
       " {'source': 'node7', 'target': 'node3'},\n",
       " {'source': 'node7', 'target': 'node4'},\n",
       " {'source': 'node7', 'target': 'node5'},\n",
       " {'source': 'node7', 'target': 'node6'},\n",
       " {'source': 'node7', 'target': 'node7'},\n",
       " {'source': 'node7', 'target': 'node8'},\n",
       " {'source': 'node8', 'target': 'node1'},\n",
       " {'source': 'node8', 'target': 'node2'},\n",
       " {'source': 'node8', 'target': 'node3'},\n",
       " {'source': 'node8', 'target': 'node4'},\n",
       " {'source': 'node8', 'target': 'node5'},\n",
       " {'source': 'node8', 'target': 'node6'},\n",
       " {'source': 'node8', 'target': 'node7'},\n",
       " {'source': 'node8', 'target': 'node8'}]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "links"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "7b893c3d",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"79b18282f61544819f627dabf2e9f3c2\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_79b18282f61544819f627dabf2e9f3c2 = echarts.init(\n",
       "                    document.getElementById('79b18282f61544819f627dabf2e9f3c2'), 'white', {renderer: 'canvas'});\n",
       "                var option_79b18282f61544819f627dabf2e9f3c2 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"graph\",\n",
       "            \"layout\": \"force\",\n",
       "            \"symbolSize\": 10,\n",
       "            \"circular\": {\n",
       "                \"rotateLabel\": false\n",
       "            },\n",
       "            \"force\": {\n",
       "                \"repulsion\": 8000,\n",
       "                \"edgeLength\": 50,\n",
       "                \"gravity\": 0.2\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"roam\": true,\n",
       "            \"draggable\": false,\n",
       "            \"focusNodeAdjacency\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"node1\",\n",
       "                    \"symbolSize\": 10\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node2\",\n",
       "                    \"symbolSize\": 20\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node3\",\n",
       "                    \"symbolSize\": 30\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node4\",\n",
       "                    \"symbolSize\": 40\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node5\",\n",
       "                    \"symbolSize\": 50\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node6\",\n",
       "                    \"symbolSize\": 40\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node7\",\n",
       "                    \"symbolSize\": 30\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node8\",\n",
       "                    \"symbolSize\": 20\n",
       "                }\n",
       "            ],\n",
       "            \"edgeLabel\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"edgeSymbol\": [\n",
       "                null,\n",
       "                null\n",
       "            ],\n",
       "            \"edgeSymbolSize\": 10,\n",
       "            \"links\": [\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node8\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node8\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node8\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node8\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node8\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node8\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node7\",\n",
       "                    \"target\": \"node8\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node1\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node4\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node5\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node6\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node7\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node8\",\n",
       "                    \"target\": \"node8\"\n",
       "                }\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5173\\u7cfb\\u56fe\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_79b18282f61544819f627dabf2e9f3c2.setOption(option_79b18282f61544819f627dabf2e9f3c2);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x17f330eff10>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c = (\n",
    "    Graph()\n",
    "    .add(\n",
    "        '',\n",
    "        nodes,\n",
    "        links,\n",
    "        repulsion=8000   # 排斥力：越大分的越开\n",
    "    )\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title='关系图'))\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c673a3c0",
   "metadata": {},
   "source": [
    "#### 关系图2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "435bdaad",
   "metadata": {},
   "outputs": [],
   "source": [
    "nodes_data = [\n",
    "    opts.GraphNode(name='node1', symbol_size=10),\n",
    "    opts.GraphNode(name='node2', symbol_size=20),\n",
    "    opts.GraphNode(name='node3', symbol_size=30),\n",
    "    opts.GraphNode(name='node4', symbol_size=40),\n",
    "    opts.GraphNode(name='node5', symbol_size=50),\n",
    "    opts.GraphNode(name='node6', symbol_size=60),\n",
    "]\n",
    "\n",
    "links_data = [\n",
    "    opts.GraphLink(source=\"node1\", target=\"node2\", value=2),\n",
    "    opts.GraphLink(source='node2', target='node3', value=3),\n",
    "    opts.GraphLink(source='node3', target='node4', value=4),\n",
    "    opts.GraphLink(source='node4', target='node5', value=5),\n",
    "    opts.GraphLink(source='node5', target='node6', value=6),\n",
    "    opts.GraphLink(source='node6', target='node1', value=7),\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "b93d4b5f",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"1b2b9c3da1234d3cabd4f88d13bb7515\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_1b2b9c3da1234d3cabd4f88d13bb7515 = echarts.init(\n",
       "                    document.getElementById('1b2b9c3da1234d3cabd4f88d13bb7515'), 'white', {renderer: 'canvas'});\n",
       "                var option_1b2b9c3da1234d3cabd4f88d13bb7515 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"graph\",\n",
       "            \"layout\": \"force\",\n",
       "            \"symbolSize\": 10,\n",
       "            \"circular\": {\n",
       "                \"rotateLabel\": false\n",
       "            },\n",
       "            \"force\": {\n",
       "                \"repulsion\": 5000,\n",
       "                \"edgeLength\": 50,\n",
       "                \"gravity\": 0.2\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"roam\": true,\n",
       "            \"draggable\": false,\n",
       "            \"focusNodeAdjacency\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"node1\",\n",
       "                    \"fixed\": false,\n",
       "                    \"symbolSize\": 10\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node2\",\n",
       "                    \"fixed\": false,\n",
       "                    \"symbolSize\": 20\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node3\",\n",
       "                    \"fixed\": false,\n",
       "                    \"symbolSize\": 30\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node4\",\n",
       "                    \"fixed\": false,\n",
       "                    \"symbolSize\": 40\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node5\",\n",
       "                    \"fixed\": false,\n",
       "                    \"symbolSize\": 50\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"node6\",\n",
       "                    \"fixed\": false,\n",
       "                    \"symbolSize\": 60\n",
       "                }\n",
       "            ],\n",
       "            \"edgeLabel\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"middle\",\n",
       "                \"margin\": 8,\n",
       "                \"formatter\": \"{b}\\u7684\\u6570\\u636e:{c}\"\n",
       "            },\n",
       "            \"edgeSymbol\": [\n",
       "                null,\n",
       "                null\n",
       "            ],\n",
       "            \"edgeSymbolSize\": 10,\n",
       "            \"links\": [\n",
       "                {\n",
       "                    \"source\": \"node1\",\n",
       "                    \"target\": \"node2\",\n",
       "                    \"value\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node2\",\n",
       "                    \"target\": \"node3\",\n",
       "                    \"value\": 3\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node3\",\n",
       "                    \"target\": \"node4\",\n",
       "                    \"value\": 4\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node4\",\n",
       "                    \"target\": \"node5\",\n",
       "                    \"value\": 5\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node5\",\n",
       "                    \"target\": \"node6\",\n",
       "                    \"value\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"node6\",\n",
       "                    \"target\": \"node1\",\n",
       "                    \"value\": 7\n",
       "                }\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5173\\u7cfb\\u56fe\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_1b2b9c3da1234d3cabd4f88d13bb7515.setOption(option_1b2b9c3da1234d3cabd4f88d13bb7515);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x17f337d48e0>"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c = (\n",
    "    Graph()\n",
    "    .add(\n",
    "        '',\n",
    "        nodes_data,\n",
    "        links_data,\n",
    "        repulsion=5000,   # 排斥力：越大分的越开\n",
    "        \n",
    "        # \n",
    "        edge_label=opts.LabelOpts(\n",
    "            is_show=True,\n",
    "            position='middle',\n",
    "            formatter='{b}的数据:{c}'\n",
    "        )\n",
    "    )\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title='关系图'))\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d491513",
   "metadata": {},
   "source": [
    "#### 关系图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "49274a2b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "c3d6629e",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"les-miserables.json\", \"r\", encoding=\"utf-8\") as f:\n",
    "    j = json.load(f)\n",
    "    nodes = j[\"nodes\"]\n",
    "    links = j[\"links\"]\n",
    "    categories = j[\"categories\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "74b45584",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'name': 'A'},\n",
       " {'name': 'B'},\n",
       " {'name': 'C'},\n",
       " {'name': 'D'},\n",
       " {'name': 'E'},\n",
       " {'name': 'F'},\n",
       " {'name': 'G'},\n",
       " {'name': 'H'},\n",
       " {'name': 'I'}]"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# j\n",
    "# nodes\n",
    "# links\n",
    "categories"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "0de74b6c",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"b60dd2e052ef44738645a1f336536eae\" style=\"width:800px; height:600px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_b60dd2e052ef44738645a1f336536eae = echarts.init(\n",
       "                    document.getElementById('b60dd2e052ef44738645a1f336536eae'), 'white', {renderer: 'canvas'});\n",
       "                var option_b60dd2e052ef44738645a1f336536eae = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"graph\",\n",
       "            \"layout\": \"circular\",\n",
       "            \"symbolSize\": 10,\n",
       "            \"circular\": {\n",
       "                \"rotateLabel\": true\n",
       "            },\n",
       "            \"force\": {\n",
       "                \"repulsion\": 50,\n",
       "                \"edgeLength\": 50,\n",
       "                \"gravity\": 0.2\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"right\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0.3,\n",
       "                \"type\": \"solid\",\n",
       "                \"color\": \"source\"\n",
       "            },\n",
       "            \"roam\": true,\n",
       "            \"draggable\": false,\n",
       "            \"focusNodeAdjacency\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"id\": \"0\",\n",
       "                    \"name\": \"Myriel\",\n",
       "                    \"symbolSize\": 19.12381,\n",
       "                    \"x\": -266.82776,\n",
       "                    \"y\": 299.6904,\n",
       "                    \"value\": 28.685715,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"1\",\n",
       "                    \"name\": \"Napoleon\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -418.08344,\n",
       "                    \"y\": 446.8853,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"2\",\n",
       "                    \"name\": \"MlleBaptistine\",\n",
       "                    \"symbolSize\": 6.323809333333333,\n",
       "                    \"x\": -212.76357,\n",
       "                    \"y\": 245.29176,\n",
       "                    \"value\": 9.485714,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"3\",\n",
       "                    \"name\": \"MmeMagloire\",\n",
       "                    \"symbolSize\": 6.323809333333333,\n",
       "                    \"x\": -242.82404,\n",
       "                    \"y\": 235.26283,\n",
       "                    \"value\": 9.485714,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"4\",\n",
       "                    \"name\": \"CountessDeLo\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -379.30386,\n",
       "                    \"y\": 429.06424,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"5\",\n",
       "                    \"name\": \"Geborand\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -417.26337,\n",
       "                    \"y\": 406.03506,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"6\",\n",
       "                    \"name\": \"Champtercier\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -332.6012,\n",
       "                    \"y\": 485.16974,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"7\",\n",
       "                    \"name\": \"Cravatte\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -382.69568,\n",
       "                    \"y\": 475.09113,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"8\",\n",
       "                    \"name\": \"Count\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -320.384,\n",
       "                    \"y\": 387.17325,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"9\",\n",
       "                    \"name\": \"OldMan\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -344.39832,\n",
       "                    \"y\": 451.16772,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 0\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"10\",\n",
       "                    \"name\": \"Labarre\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -89.34107,\n",
       "                    \"y\": 234.56128,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"11\",\n",
       "                    \"name\": \"Valjean\",\n",
       "                    \"symbolSize\": 66.66666666666667,\n",
       "                    \"x\": -87.93029,\n",
       "                    \"y\": -6.8120565,\n",
       "                    \"value\": 100,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"12\",\n",
       "                    \"name\": \"Marguerite\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": -339.77908,\n",
       "                    \"y\": -184.69139,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"13\",\n",
       "                    \"name\": \"MmeDeR\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -194.31313,\n",
       "                    \"y\": 178.55301,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"14\",\n",
       "                    \"name\": \"Isabeau\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -158.05168,\n",
       "                    \"y\": 201.99768,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"15\",\n",
       "                    \"name\": \"Gervais\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -127.701546,\n",
       "                    \"y\": 242.55057,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"16\",\n",
       "                    \"name\": \"Tholomyes\",\n",
       "                    \"symbolSize\": 17.295237333333333,\n",
       "                    \"x\": -385.2226,\n",
       "                    \"y\": -393.5572,\n",
       "                    \"value\": 25.942856,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"17\",\n",
       "                    \"name\": \"Listolier\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": -516.55884,\n",
       "                    \"y\": -393.98975,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"18\",\n",
       "                    \"name\": \"Fameuil\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": -464.79382,\n",
       "                    \"y\": -493.57944,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"19\",\n",
       "                    \"name\": \"Blacheville\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": -515.1624,\n",
       "                    \"y\": -456.9891,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"20\",\n",
       "                    \"name\": \"Favourite\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": -408.12122,\n",
       "                    \"y\": -464.5048,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"21\",\n",
       "                    \"name\": \"Dahlia\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": -456.44113,\n",
       "                    \"y\": -425.13303,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"22\",\n",
       "                    \"name\": \"Zephine\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": -459.1107,\n",
       "                    \"y\": -362.5133,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"23\",\n",
       "                    \"name\": \"Fantine\",\n",
       "                    \"symbolSize\": 28.266666666666666,\n",
       "                    \"x\": -313.42786,\n",
       "                    \"y\": -289.44803,\n",
       "                    \"value\": 42.4,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"24\",\n",
       "                    \"name\": \"MmeThenardier\",\n",
       "                    \"symbolSize\": 20.95238266666667,\n",
       "                    \"x\": 4.6313396,\n",
       "                    \"y\": -273.8517,\n",
       "                    \"value\": 31.428574,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"25\",\n",
       "                    \"name\": \"Thenardier\",\n",
       "                    \"symbolSize\": 30.095235333333335,\n",
       "                    \"x\": 82.80825,\n",
       "                    \"y\": -203.1144,\n",
       "                    \"value\": 45.142853,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"26\",\n",
       "                    \"name\": \"Cosette\",\n",
       "                    \"symbolSize\": 20.95238266666667,\n",
       "                    \"x\": 78.64646,\n",
       "                    \"y\": -31.512747,\n",
       "                    \"value\": 31.428574,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"27\",\n",
       "                    \"name\": \"Javert\",\n",
       "                    \"symbolSize\": 31.923806666666668,\n",
       "                    \"x\": -81.46074,\n",
       "                    \"y\": -204.20204,\n",
       "                    \"value\": 47.88571,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"28\",\n",
       "                    \"name\": \"Fauchelevent\",\n",
       "                    \"symbolSize\": 8.152382000000001,\n",
       "                    \"x\": -225.73984,\n",
       "                    \"y\": 82.41631,\n",
       "                    \"value\": 12.228573,\n",
       "                    \"category\": 4\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"29\",\n",
       "                    \"name\": \"Bamatabois\",\n",
       "                    \"symbolSize\": 15.466666666666667,\n",
       "                    \"x\": -385.6842,\n",
       "                    \"y\": -20.206686,\n",
       "                    \"value\": 23.2,\n",
       "                    \"category\": 3\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"30\",\n",
       "                    \"name\": \"Perpetue\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": -403.92447,\n",
       "                    \"y\": -197.69823,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"31\",\n",
       "                    \"name\": \"Simplice\",\n",
       "                    \"symbolSize\": 8.152382000000001,\n",
       "                    \"x\": -281.4253,\n",
       "                    \"y\": -158.45137,\n",
       "                    \"value\": 12.228573,\n",
       "                    \"category\": 2\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"32\",\n",
       "                    \"name\": \"Scaufflaire\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -122.41348,\n",
       "                    \"y\": 210.37503,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"33\",\n",
       "                    \"name\": \"Woman1\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": -234.6001,\n",
       "                    \"y\": -113.15067,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"34\",\n",
       "                    \"name\": \"Judge\",\n",
       "                    \"symbolSize\": 11.809524666666666,\n",
       "                    \"x\": -387.84915,\n",
       "                    \"y\": 58.7059,\n",
       "                    \"value\": 17.714287,\n",
       "                    \"category\": 3\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"35\",\n",
       "                    \"name\": \"Champmathieu\",\n",
       "                    \"symbolSize\": 11.809524666666666,\n",
       "                    \"x\": -338.2307,\n",
       "                    \"y\": 87.48405,\n",
       "                    \"value\": 17.714287,\n",
       "                    \"category\": 3\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"36\",\n",
       "                    \"name\": \"Brevet\",\n",
       "                    \"symbolSize\": 11.809524666666666,\n",
       "                    \"x\": -453.26874,\n",
       "                    \"y\": 58.94648,\n",
       "                    \"value\": 17.714287,\n",
       "                    \"category\": 3\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"37\",\n",
       "                    \"name\": \"Chenildieu\",\n",
       "                    \"symbolSize\": 11.809524666666666,\n",
       "                    \"x\": -386.44904,\n",
       "                    \"y\": 140.05937,\n",
       "                    \"value\": 17.714287,\n",
       "                    \"category\": 3\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"38\",\n",
       "                    \"name\": \"Cochepaille\",\n",
       "                    \"symbolSize\": 11.809524666666666,\n",
       "                    \"x\": -446.7876,\n",
       "                    \"y\": 123.38005,\n",
       "                    \"value\": 17.714287,\n",
       "                    \"category\": 3\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"39\",\n",
       "                    \"name\": \"Pontmercy\",\n",
       "                    \"symbolSize\": 6.323809333333333,\n",
       "                    \"x\": 336.49738,\n",
       "                    \"y\": -269.55914,\n",
       "                    \"value\": 9.485714,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"40\",\n",
       "                    \"name\": \"Boulatruelle\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": 29.187843,\n",
       "                    \"y\": -460.13132,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"41\",\n",
       "                    \"name\": \"Eponine\",\n",
       "                    \"symbolSize\": 20.95238266666667,\n",
       "                    \"x\": 238.36697,\n",
       "                    \"y\": -210.00926,\n",
       "                    \"value\": 31.428574,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"42\",\n",
       "                    \"name\": \"Anzelma\",\n",
       "                    \"symbolSize\": 6.323809333333333,\n",
       "                    \"x\": 189.69513,\n",
       "                    \"y\": -346.50662,\n",
       "                    \"value\": 9.485714,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"43\",\n",
       "                    \"name\": \"Woman2\",\n",
       "                    \"symbolSize\": 6.323809333333333,\n",
       "                    \"x\": -187.00418,\n",
       "                    \"y\": -145.02663,\n",
       "                    \"value\": 9.485714,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"44\",\n",
       "                    \"name\": \"MotherInnocent\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": -252.99521,\n",
       "                    \"y\": 129.87549,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 4\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"45\",\n",
       "                    \"name\": \"Gribier\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": -296.07935,\n",
       "                    \"y\": 163.11964,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 4\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"46\",\n",
       "                    \"name\": \"Jondrette\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": 550.3201,\n",
       "                    \"y\": 522.4031,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 5\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"47\",\n",
       "                    \"name\": \"MmeBurgon\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": 488.13535,\n",
       "                    \"y\": 356.8573,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 5\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"48\",\n",
       "                    \"name\": \"Gavroche\",\n",
       "                    \"symbolSize\": 41.06667066666667,\n",
       "                    \"x\": 387.89572,\n",
       "                    \"y\": 110.462326,\n",
       "                    \"value\": 61.600006,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"49\",\n",
       "                    \"name\": \"Gillenormand\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": 126.4831,\n",
       "                    \"y\": 68.10622,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"50\",\n",
       "                    \"name\": \"Magnon\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": 127.07365,\n",
       "                    \"y\": -113.05923,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"51\",\n",
       "                    \"name\": \"MlleGillenormand\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": 162.63559,\n",
       "                    \"y\": 117.6565,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"52\",\n",
       "                    \"name\": \"MmePontmercy\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": 353.66415,\n",
       "                    \"y\": -205.89165,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"53\",\n",
       "                    \"name\": \"MlleVaubois\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": 165.43939,\n",
       "                    \"y\": 339.7736,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"54\",\n",
       "                    \"name\": \"LtGillenormand\",\n",
       "                    \"symbolSize\": 8.152382000000001,\n",
       "                    \"x\": 137.69348,\n",
       "                    \"y\": 196.1069,\n",
       "                    \"value\": 12.228573,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"55\",\n",
       "                    \"name\": \"Marius\",\n",
       "                    \"symbolSize\": 35.58095333333333,\n",
       "                    \"x\": 206.44687,\n",
       "                    \"y\": -13.805411,\n",
       "                    \"value\": 53.37143,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"56\",\n",
       "                    \"name\": \"BaronessT\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": 194.82993,\n",
       "                    \"y\": 224.78036,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 6\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"57\",\n",
       "                    \"name\": \"Mabeuf\",\n",
       "                    \"symbolSize\": 20.95238266666667,\n",
       "                    \"x\": 597.6618,\n",
       "                    \"y\": 135.18481,\n",
       "                    \"value\": 31.428574,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"58\",\n",
       "                    \"name\": \"Enjolras\",\n",
       "                    \"symbolSize\": 28.266666666666666,\n",
       "                    \"x\": 355.78366,\n",
       "                    \"y\": -74.882454,\n",
       "                    \"value\": 42.4,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"59\",\n",
       "                    \"name\": \"Combeferre\",\n",
       "                    \"symbolSize\": 20.95238266666667,\n",
       "                    \"x\": 515.2961,\n",
       "                    \"y\": -46.167564,\n",
       "                    \"value\": 31.428574,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"60\",\n",
       "                    \"name\": \"Prouvaire\",\n",
       "                    \"symbolSize\": 17.295237333333333,\n",
       "                    \"x\": 614.29285,\n",
       "                    \"y\": -69.3104,\n",
       "                    \"value\": 25.942856,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"61\",\n",
       "                    \"name\": \"Feuilly\",\n",
       "                    \"symbolSize\": 20.95238266666667,\n",
       "                    \"x\": 550.1917,\n",
       "                    \"y\": -128.17537,\n",
       "                    \"value\": 31.428574,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"62\",\n",
       "                    \"name\": \"Courfeyrac\",\n",
       "                    \"symbolSize\": 24.609526666666667,\n",
       "                    \"x\": 436.17184,\n",
       "                    \"y\": -12.7286825,\n",
       "                    \"value\": 36.91429,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"63\",\n",
       "                    \"name\": \"Bahorel\",\n",
       "                    \"symbolSize\": 22.780953333333333,\n",
       "                    \"x\": 602.55225,\n",
       "                    \"y\": 16.421427,\n",
       "                    \"value\": 34.17143,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"64\",\n",
       "                    \"name\": \"Bossuet\",\n",
       "                    \"symbolSize\": 24.609526666666667,\n",
       "                    \"x\": 455.81955,\n",
       "                    \"y\": -115.45826,\n",
       "                    \"value\": 36.91429,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"65\",\n",
       "                    \"name\": \"Joly\",\n",
       "                    \"symbolSize\": 22.780953333333333,\n",
       "                    \"x\": 516.40784,\n",
       "                    \"y\": 47.242233,\n",
       "                    \"value\": 34.17143,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"66\",\n",
       "                    \"name\": \"Grantaire\",\n",
       "                    \"symbolSize\": 19.12381,\n",
       "                    \"x\": 646.4313,\n",
       "                    \"y\": -151.06331,\n",
       "                    \"value\": 28.685715,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"67\",\n",
       "                    \"name\": \"MotherPlutarch\",\n",
       "                    \"symbolSize\": 2.6666666666666665,\n",
       "                    \"x\": 668.9568,\n",
       "                    \"y\": 204.65488,\n",
       "                    \"value\": 4,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"68\",\n",
       "                    \"name\": \"Gueulemer\",\n",
       "                    \"symbolSize\": 19.12381,\n",
       "                    \"x\": 78.4799,\n",
       "                    \"y\": -347.15146,\n",
       "                    \"value\": 28.685715,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"69\",\n",
       "                    \"name\": \"Babet\",\n",
       "                    \"symbolSize\": 19.12381,\n",
       "                    \"x\": 150.35959,\n",
       "                    \"y\": -298.50797,\n",
       "                    \"value\": 28.685715,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"70\",\n",
       "                    \"name\": \"Claquesous\",\n",
       "                    \"symbolSize\": 19.12381,\n",
       "                    \"x\": 137.3717,\n",
       "                    \"y\": -410.2809,\n",
       "                    \"value\": 28.685715,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"71\",\n",
       "                    \"name\": \"Montparnasse\",\n",
       "                    \"symbolSize\": 17.295237333333333,\n",
       "                    \"x\": 234.87747,\n",
       "                    \"y\": -400.85983,\n",
       "                    \"value\": 25.942856,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"72\",\n",
       "                    \"name\": \"Toussaint\",\n",
       "                    \"symbolSize\": 6.323809333333333,\n",
       "                    \"x\": 40.942253,\n",
       "                    \"y\": 113.78272,\n",
       "                    \"value\": 9.485714,\n",
       "                    \"category\": 1\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"73\",\n",
       "                    \"name\": \"Child1\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": 437.939,\n",
       "                    \"y\": 291.58234,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"74\",\n",
       "                    \"name\": \"Child2\",\n",
       "                    \"symbolSize\": 4.495239333333333,\n",
       "                    \"x\": 466.04922,\n",
       "                    \"y\": 283.3606,\n",
       "                    \"value\": 6.742859,\n",
       "                    \"category\": 8\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"75\",\n",
       "                    \"name\": \"Brujon\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": 238.79364,\n",
       "                    \"y\": -314.06345,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 7\n",
       "                },\n",
       "                {\n",
       "                    \"id\": \"76\",\n",
       "                    \"name\": \"MmeHucheloup\",\n",
       "                    \"symbolSize\": 13.638097333333334,\n",
       "                    \"x\": 712.18353,\n",
       "                    \"y\": 4.8131495,\n",
       "                    \"value\": 20.457146,\n",
       "                    \"category\": 8\n",
       "                }\n",
       "            ],\n",
       "            \"categories\": [\n",
       "                {\n",
       "                    \"name\": \"A\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"B\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"C\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"D\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"E\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"F\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"G\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"H\"\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"I\"\n",
       "                }\n",
       "            ],\n",
       "            \"edgeLabel\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"edgeSymbol\": [\n",
       "                null,\n",
       "                null\n",
       "            ],\n",
       "            \"edgeSymbolSize\": 10,\n",
       "            \"links\": [\n",
       "                {\n",
       "                    \"source\": \"1\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"2\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"3\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"3\",\n",
       "                    \"target\": \"2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"4\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"5\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"6\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"7\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"8\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"9\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"11\",\n",
       "                    \"target\": \"0\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"11\",\n",
       "                    \"target\": \"2\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"11\",\n",
       "                    \"target\": \"3\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"11\",\n",
       "                    \"target\": \"10\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"12\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"13\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"14\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"15\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"17\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"18\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"18\",\n",
       "                    \"target\": \"17\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"19\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"19\",\n",
       "                    \"target\": \"17\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"19\",\n",
       "                    \"target\": \"18\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"20\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"20\",\n",
       "                    \"target\": \"17\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"20\",\n",
       "                    \"target\": \"18\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"20\",\n",
       "                    \"target\": \"19\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"21\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"21\",\n",
       "                    \"target\": \"17\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"21\",\n",
       "                    \"target\": \"18\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"21\",\n",
       "                    \"target\": \"19\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"21\",\n",
       "                    \"target\": \"20\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"22\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"22\",\n",
       "                    \"target\": \"17\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"22\",\n",
       "                    \"target\": \"18\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"22\",\n",
       "                    \"target\": \"19\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"22\",\n",
       "                    \"target\": \"20\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"22\",\n",
       "                    \"target\": \"21\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"12\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"17\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"18\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"19\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"20\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"21\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"23\",\n",
       "                    \"target\": \"22\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"24\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"24\",\n",
       "                    \"target\": \"23\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"25\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"25\",\n",
       "                    \"target\": \"23\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"25\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"26\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"26\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"26\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"26\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"27\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"27\",\n",
       "                    \"target\": \"23\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"27\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"27\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"27\",\n",
       "                    \"target\": \"26\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"28\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"28\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"29\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"29\",\n",
       "                    \"target\": \"23\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"29\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"30\",\n",
       "                    \"target\": \"23\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"31\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"31\",\n",
       "                    \"target\": \"23\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"31\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"31\",\n",
       "                    \"target\": \"30\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"32\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"33\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"33\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"34\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"34\",\n",
       "                    \"target\": \"29\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"35\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"35\",\n",
       "                    \"target\": \"29\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"35\",\n",
       "                    \"target\": \"34\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"36\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"36\",\n",
       "                    \"target\": \"29\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"36\",\n",
       "                    \"target\": \"34\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"36\",\n",
       "                    \"target\": \"35\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"37\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"37\",\n",
       "                    \"target\": \"29\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"37\",\n",
       "                    \"target\": \"34\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"37\",\n",
       "                    \"target\": \"35\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"37\",\n",
       "                    \"target\": \"36\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"38\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"38\",\n",
       "                    \"target\": \"29\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"38\",\n",
       "                    \"target\": \"34\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"38\",\n",
       "                    \"target\": \"35\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"38\",\n",
       "                    \"target\": \"36\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"38\",\n",
       "                    \"target\": \"37\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"39\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"40\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"41\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"41\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"42\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"42\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"42\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"43\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"43\",\n",
       "                    \"target\": \"26\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"43\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"44\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"44\",\n",
       "                    \"target\": \"28\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"45\",\n",
       "                    \"target\": \"28\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"47\",\n",
       "                    \"target\": \"46\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"48\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"48\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"48\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"48\",\n",
       "                    \"target\": \"47\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"49\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"49\",\n",
       "                    \"target\": \"26\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"50\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"50\",\n",
       "                    \"target\": \"49\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"51\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"51\",\n",
       "                    \"target\": \"26\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"51\",\n",
       "                    \"target\": \"49\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"52\",\n",
       "                    \"target\": \"39\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"52\",\n",
       "                    \"target\": \"51\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"53\",\n",
       "                    \"target\": \"51\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"54\",\n",
       "                    \"target\": \"26\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"54\",\n",
       "                    \"target\": \"49\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"54\",\n",
       "                    \"target\": \"51\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"16\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"26\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"39\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"49\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"51\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"55\",\n",
       "                    \"target\": \"54\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"56\",\n",
       "                    \"target\": \"49\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"56\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"57\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"57\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"57\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"58\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"58\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"58\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"58\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"58\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"59\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"59\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"59\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"59\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"60\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"60\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"60\",\n",
       "                    \"target\": \"59\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"61\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"61\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"61\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"61\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"61\",\n",
       "                    \"target\": \"59\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"61\",\n",
       "                    \"target\": \"60\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"59\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"60\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"62\",\n",
       "                    \"target\": \"61\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"59\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"60\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"61\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"63\",\n",
       "                    \"target\": \"62\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"59\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"60\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"61\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"62\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"64\",\n",
       "                    \"target\": \"63\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"55\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"59\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"60\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"61\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"62\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"63\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"65\",\n",
       "                    \"target\": \"64\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"59\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"60\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"61\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"62\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"63\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"64\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"66\",\n",
       "                    \"target\": \"65\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"67\",\n",
       "                    \"target\": \"57\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"68\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"68\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"68\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"68\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"68\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"68\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"69\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"69\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"69\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"69\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"69\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"69\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"69\",\n",
       "                    \"target\": \"68\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"24\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"68\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"70\",\n",
       "                    \"target\": \"69\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"68\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"69\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"71\",\n",
       "                    \"target\": \"70\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"72\",\n",
       "                    \"target\": \"11\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"72\",\n",
       "                    \"target\": \"26\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"72\",\n",
       "                    \"target\": \"27\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"73\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"74\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"74\",\n",
       "                    \"target\": \"73\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"75\",\n",
       "                    \"target\": \"25\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"75\",\n",
       "                    \"target\": \"41\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"75\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"75\",\n",
       "                    \"target\": \"68\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"75\",\n",
       "                    \"target\": \"69\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"75\",\n",
       "                    \"target\": \"70\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"75\",\n",
       "                    \"target\": \"71\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"76\",\n",
       "                    \"target\": \"48\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"76\",\n",
       "                    \"target\": \"58\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"76\",\n",
       "                    \"target\": \"62\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"76\",\n",
       "                    \"target\": \"63\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"76\",\n",
       "                    \"target\": \"64\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"76\",\n",
       "                    \"target\": \"65\"\n",
       "                },\n",
       "                {\n",
       "                    \"source\": \"76\",\n",
       "                    \"target\": \"66\"\n",
       "                }\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"A\",\n",
       "                \"B\",\n",
       "                \"C\",\n",
       "                \"D\",\n",
       "                \"E\",\n",
       "                \"F\",\n",
       "                \"G\",\n",
       "                \"H\",\n",
       "                \"I\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"A\": true,\n",
       "                \"B\": true,\n",
       "                \"C\": true,\n",
       "                \"D\": true,\n",
       "                \"E\": true,\n",
       "                \"F\": true,\n",
       "                \"G\": true,\n",
       "                \"H\": true,\n",
       "                \"I\": true\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    }\n",
       "};\n",
       "                chart_b60dd2e052ef44738645a1f336536eae.setOption(option_b60dd2e052ef44738645a1f336536eae);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x17f32dd6e50>"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c = (\n",
    "    Graph(init_opts=opts.InitOpts(width='800px', height='600px'))\n",
    "    .add(\n",
    "        '',\n",
    "        nodes=nodes,\n",
    "        links=links,\n",
    "        categories=categories,  # 种类\n",
    "        layout='circular',  # 布局方式：圆\n",
    "        is_rotate_label=True,  # 旋转标签\n",
    "        \n",
    "        linestyle_opts=opts.LineStyleOpts(\n",
    "            color='source',  # 使用节点的颜色\n",
    "            curve=0.3,  # 线的弯曲程度\n",
    "        ),\n",
    "        label_opts=opts.LabelOpts(position='right')\n",
    "    )\n",
    ")\n",
    "c.render_notebook()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
